package com.fsoft.core.utils.excel;

import java.math.BigDecimal;

import org.apache.commons.lang3.StringUtils;

/**
 * Jxls 自定义函数容器 by WGJ
 * 
 * @author WGJ
 */
public class CustomFunctions {
	/**
	 * Jxls 自定义标签的固定名称
	 */
	public static final String CUSTOM_TAG_NAME = "jx";

	/**
	 * jx:ifelse 函数
	 * 
	 * Excel 中的写法示例：[:jx:ifelse(1 == 2, "true", "false")]
	 * 
	 * @param b
	 * @param o1
	 * @param o2
	 * @return
	 */
	public Object ifelse(boolean b, Object o1, Object o2) {
		return b ? o1 : o2;
	}

	/**
	 * jx:niczjz 函数
	 * 
	 * Excel 中的写法示例：[:jx:niczjz(o1, o2)]
	 * 
	 * @param b
	 * @param o1
	 * @param o2
	 * @return
	 */
	public BigDecimal niczjz(BigDecimal o1, BigDecimal o2) {
		BigDecimal a1 = new BigDecimal(o1.toString());
		BigDecimal b1 = new BigDecimal(o2.toString());
		// 相乘结果
		BigDecimal result = a1.multiply(b1);
		return result;
	}

	/**
	 * jx:getCompString 函数
	 * 
	 * 为了获得str1(str2)这种形式的字符串 ;当str2为空或空字符串时则返回str1; 当str1为空或者空字符串时则返回""
	 * 
	 * 
	 * Excel 中的写法示例：[:jx:getCompString(str1, str2, tags)]
	 * 
	 * @param str1
	 * @param str2
	 * @param tags 连接标志符,如(),也可用其他符号,但不能使用[]
	 * @return
	 */
	public String getCompString(String str1, String str2, String tags) {
		String result = "";

		if (StringUtils.isBlank(str1)) {
			return result;
		}
		if (StringUtils.isBlank(tags)) {
			tags = "()";
		}
		if (StringUtils.isNotBlank(str2)) {
			char[] tag = tags.toCharArray();
			result = str1 + tag[0] + str2 + tag[1];
		} else {
			result = str1;
		}

		return result;
	}
}
